package com.mexcad.reports;

import java.io.IOException;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;

import org.hibernate.Session;

import com.mexcad.db.delegate.DelegateConnectors;
import com.mexcad.db.utils.HibernateUtil;
import com.mexcad.utils.Constantes;
import com.mexcad.utils.Formatter;
import java.sql.Timestamp;

public class PagosAnticipadosServletReport extends HttpServlet {
		private static final long serialVersionUID = 1L;
		private Session session;
		public static Connection con;

		protected void doPost(HttpServletRequest req, HttpServletResponse res)
				throws ServletException, IOException {
			this.session = HibernateUtil.getSessionFactory().openSession();

			con = this.session.connection();

			ServletContext context = getServletContext();
			String pathReport = context.getRealPath("reports") + Constantes.DIV;
			//String pathReport = context.getRealPath("reports") + "/";
			System.out.println("pathReport: "+pathReport);
			// Parametros
			Map<String,Object> parametros = new HashMap<String, Object>();

			// Nombre del Reporte
			String sNomRep = Constantes.PAGOS_ANTICIPADOS;

			// parametros a pasar al reporte
	
		//	parametros.put("idCliente", Integer.parseInt(req.getParameter("idCliente")));
			parametros.put("parPath", pathReport);
			
			String fechaIni= req.getParameter("fecha_ini");
			String fechaFin= req.getParameter("fecha_fin");
			System.out.println("parametros "+ new Timestamp(Formatter.getDateFromString(fechaIni).getTime())+", \n"+
					   "fechafinal "+new Timestamp(Formatter.getDateFromString(fechaFin).getTime()) +", \n"+
					   "rutaImagen "+Constantes.RUTA_IMAGENES_REPORTES+", \n"+
					   "entregasParciales "+req.getParameter("entregasParciales")+", \n"+
					   "especialFinal "+req.getParameter("especialFinal")+", \n"+
					   "normal "+req.getParameter("normal")+", \n"+
					   "normaliva "+req.getParameter("normaliva")+", \n"+
					   "unam "+req.getParameter("unam")+", \n"+
					   "especial "+req.getParameter("especial")+", \n"+
					   "unamIva "+req.getParameter("unamIva"));
			
			parametros.put("rutaImagen",Constantes.RUTA_IMAGENES_REPORTES);
			
			parametros.put("fechaactual", new Timestamp(Formatter.getFechaHoraActual().getTime()));
			parametros.put("fechainicial", new Timestamp(Formatter.getDateFromString(fechaIni).getTime()));
			parametros.put("fechafinal",new Timestamp(Formatter.getDateFromString(fechaFin).getTime()) );
			
	
		//	parametros.put("numsolicitud", req.getParameter("idSolicitud"));
			
		
		
			try {
				// Ruta y nombre de archivo
						
			//	String fileRep = "C:\\proyectos\\grasshopper\\MexCad\\WebContent\\reports\\"+sNomRep;//ParametrosConfigRPC.getPathReportes() + sNomRep;
				
				// se crea el reporte
				JasperPrint imprime = JasperFillManager.fillReport(Constantes.RUTA_JASPER+sNomRep+".jasper", parametros, con);

				// graba el pdf en disco
			//	JasperManager.printReportToPdfFile(imprime, fileRep+".pdf");
				JasperExportManager.exportReportToPdfFile(imprime, pathReport + sNomRep+".pdf");

				// Redireciona al pdf creado
				res.sendRedirect("reports/" + sNomRep + ".pdf");
			} catch (Exception e) {
				res.getWriter().println("Error al generar el reporte: " + e);
			}
		}

		protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
				throws ServletException, IOException {
			doPost(arg0, arg1);
		}
}




